home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1997 #3
/
Amiga Plus CD - 1997 - No. 03.iso
/
pd
/
programmierung
/
alienbreed3d2_src
/
level1
/
anims
next >
Wrap
Text File
|
1997-01-31
|
9KB
|
670 lines
brightanim:
move.l branimpt,a0
move.w (a0),d0
move.w d0,ZoneDat24+6
sub.w #10,d0
asr.w #1,d0
add.w #10,d0
move.w d0,ZoneDat23+6
move.w d0,ZoneDat23+6
sub.w #1,branimcount
bgt.s nonextbr
adda.w #4,a0
cmp.l #endbranim,a0
blt.s notrestartbr
move.l #branim,a0
notrestartbr
move.l a0,branimpt
move.w 2(a0),branimcount
nonextbr:
rts
branimpt: dc.l branim
branimcount: dc.w 0
branim:
dc.w 10,1
dc.w -15,1
dc.w 10,3
dc.w -15,1
dc.w 10,4
dc.w -15,1
dc.w 10,1
dc.w -15,2
dc.w 10,2
dc.w -8,1
dc.w 10,1
dc.w -5,1
dc.w 10,2
dc.w -15,1
dc.w 10,2
endbranim
objvels: ds.l 8
PlayerZone: dc.w 0
objmoveanim:
move.l Roompt,a0
move.w (a0),PlayerZone
; bsr brightanim
bsr PlayerShot
; bsr Nasties
; bsr CheckPickups
bsr ObjectHandler
rts
GotBigGun: dc.w 0
GunDamage:
dc.w 0
rotcount:
dc.w 0
shotvels: ds.l 20
clicked: dc.w 0
popping: ds.l 5*4
GunNoise: dc.w 1
PlayerShot:
tst.b clicked
bne pressedfire
rts
tempangpos: dc.w 0
pressedfire:
move.w angpos,tempangpos
move.w #0,d7
move.w #256,d6
move.w #256,d5
firefive:
move.l #PlayerShotData,a0
move.w #19,d1
findonefree
move.w 12(a0),d0
blt.s foundonefree
adda.w #32,a0
dbra d1,findonefree
rts
foundonefree:
move.w #0,Noisex
move.w #0,Noisez
move.w #50,Noisevol
move.w GunNoise,Samplenum
move.b #2,chanpick
clr.b notifplaying
move.b GotBigGun,shotsize(a0)
move.b GunDamage,shotpower(a0)
movem.l a0/d5/d6/d7,-(a7)
jsr MakeSomeNoise
movem.l (a7)+,a0/d5/d6/d7
move.l #ObjectPoints,a1
move.w (a0),d1
lea (a1,d1.w*4),a1
move.w xoff,(a1)
move.w zoff,2(a1)
move.w tempangpos,d0
and.w #8191,d0
move.l #SineTable,a2
adda.w d0,a2
move.w (a2),d0
ext.l d0
asl.l #7,d0
swap d0
move.w d0,shotxvel(a0)
move.w 2048(a2),d0
ext.l d0
asl.l #7,d0
swap d0
move.w d0,shotzvel(a0)
move.l Roompt,a2
move.w (a2),12(a0)
move.l 2(a2),d0
asr.l #7,d0
add.w #50,d0
move.w d0,4(a0)
add.w d6,tempangpos
neg.w d6
neg.w d5
add.w d5,d6
dbra d7,firefive
rts
duh: dc.w 0
double: dc.w 0
ivescreamed: dc.w 0
ObjectHandler:
move.l #ObjectData,a0
Objectloop:
tst.w (a0)
blt.s doneallobj
cmp.b #0,16(a0)
bne.s notnasty
bsr ItsANasty
notnasty:
cmp.b #1,16(a0)
bne.s notmedi
bsr ItsAMediKit
notmedi:
cmp.b #2,16(a0)
bne.s notbullet
bsr ItsABullet
notbullet:
cmp.b #3,16(a0)
bne.s notbiggun
bsr ItsABigGun
notbiggun:
adda.w #32,a0
bra Objectloop
doneallobj:
ItsANasty:
tst.b 17(a0)
beq NasType1
rts
NasType1:
tst.w 12(a0)
blt notthisone
clr.b ivescreamed
tst.b numlives(a0)
bgt.s itsaround
move.b #0,numlives(a0)
move.w #-1,12(a0)
bra notthisone
itsaround:
move.w 4(a0),d0
cmp.w targheight(a0),d0
beq.s rightheight
bgt.s goingdown
add.w #16,d0
goingdown:
subq #8,d0
rightheight:
move.w d0,4(a0)
move.b damagetaken(a0),d2
beq.s okrunaround
* I've been shot!
st ivescreamed
sub.b d2,numlives(a0)
sub.w #20,currspd(a0)
move.b #0,damagetaken(a0)
okrunaround:
move.w (a0),d0
move.l #ObjectPoints,a1
lea (a1,d0.w*4),a1
move.l (a1),oldx
move.w xoff,newx
move.w zoff,newz
move.w currspd(a0),d2
cmp.w maxspd(a0),d2
blt.s tooslow
beq.s notoofast
subq #6,d2
tooslow:
addq #4,d2
notoofast:
move.w d2,currspd(a0)
move.w d2,speed
move.w #40,Range
move.w 12(a0),d2
move.l #ZoneAdds,a5
move.l (a5,d2.w*4),objroom
movem.l a0/a1/a3/a4/d7,-(a7)
jsr HeadTowards
Jsr MoveObject
movem.l (a7)+,a0/a1/a3/a4/d7
tst.b GotThere
beq.s NotEating
movem.l d0-d7/a0-a6,-(a7)
sub.l #ObjectPoints,a1
add.l a1,a1
add.l #ObjRotated,a1
move.l (a1),Noisex
move.w #200,Noisevol
move.w #2,Samplenum
move.b #3,chanpick
st notifplaying
st backbeat
jsr MakeSomeNoise
sub.w #1,Energy
movem.l (a7)+,d0-d7/a0-a6
NotEating:
move.l objroom,a2
tst.b ivescreamed
bne.s screamanyway
move.w (a2),d0
cmp.w 12(a0),d0
beq.s nochangeroom
move.l #Objects+4096*5,8(a0)
cmp.l Roompt,a2
bne.s nochangeroom
move.w #40,currspd(a0)
screamanyway:
move.l #Objects+4096*6,8(a0)
movem.l d0-d7/a0-a6,-(a7)
sub.l #ObjectPoints,a1
add.l a1,a1
add.l #ObjRotated,a1
move.l (a1),Noisex
move.w #200,Noisevol
move.w #0,Samplenum
move.b #1,chanpick
clr.b notifplaying
st backbeat
jsr MakeSomeNoise
movem.l (a7)+,d0-d7/a0-a6
nochangeroom:
move.w (a2),12(a0)
move.w 6(a2),2(a0)
move.l 2(a2),d0
asr.l #7,d0
move.w d0,targheight(a0)
move.w (a0),d0
move.l #ObjectPoints,a1
move.l newx,(a1,d0.w*4)
notthisone:
rts
ItsAMediKit:
HealFactor EQU 18
move.w xoff,oldx
move.w zoff,oldz
move.w PlayerZone,d7
cmp.w 12(a0),d7
bne.s .NotSameZone
move.w (a0),d0
move.l #ObjectPoints,a1
move.l (a1,d0.w*4),newx
move.l #32*32,d2
bsr CheckHit
tst.b hitwall
beq.s .NotPickedUp
move.w #0,Noisex
move.w #0,Noisez
move.w #50,Noisevol
move.w #4,Samplenum
move.b #2,chanpick
clr.b notifplaying
movem.l a0/a1/d2/d6/d7,-(a7)
jsr MakeSomeNoise
movem.l (a7)+,a0/a1/d2/d6/d7
move.w #-1,12(a0)
move.w HealFactor(a0),d0
add.w d0,Energy
.NotPickedUp:
.NotSameZone:
rts
ItsABigGun:
move.w xoff,oldx
move.w zoff,oldz
move.w PlayerZone,d7
cmp.w 12(a0),d7
bne .NotSameZone
move.w (a0),d0
move.l #ObjectPoints,a1
move.l (a1,d0.w*4),newx
move.l #32*32,d2
bsr CheckHit
tst.b hitwall
beq.s .NotPickedUp
move.w #0,Noisex
move.w #0,Noisez
move.w #50,Noisevol
move.w #4,Samplenum
move.b #2,chanpick
clr.b notifplaying
movem.l a0/a1/d2/d6/d7,-(a7)
jsr MakeSomeNoise
movem.l (a7)+,a0/a1/d2/d6/d7
move.l #Cheese,FacesPtr
move.b #5,GunDamage
st GotBigGun
move.w #1,GunNoise
move.w #-1,12(a0)
.NotPickedUp:
.NotSameZone:
rts
ItsABullet:
tst.b shotsize(a0)
beq.s ItsASmallBullet
bra ItsABigBullet
ItsASmallBullet
move.w 12(a0),d0
blt doneshot
move.w #50*128,6(a0)
move.l #ObjectPoints,a1
move.w (a0),d1
lea (a1,d1.w*4),a1
move.l #Objects+4096*11+32,8(a0)
move.w (a1),d2
move.w d2,oldx
add.w shotxvel(a0),d2
move.w d2,newx
move.w 2(a1),d2
move.w d2,oldz
add.w shotzvel(a0),d2
move.w d2,newz
move.l #ZoneAdds,a2
move.l (a2,d0.w*4),objroom
movem.l d0/d7/a0/a1/a2/a4/a5,-(a7)
jsr MoveObject
movem.l (a7)+,d0/d7/a0/a1/a2/a4/a5
tst.b hitwall
beq.s nothitwall
move.w #-1,12(a0)
bra doneshot
rts
nothitwall:
move.l objroom,a3
move.w (a3),12(a0)
move.w newx,(a1)
move.w newz,2(a1)
************
* Check if hit a nasty
move.l (a1),oldx
move.l #ObjectPoints,a1
move.l #ObjectData,a3
checkloop:
tst.w (a3)
blt checkedall
tst.w 12(a3)
blt.s notanasty
cmp.b #0,16(a3)
bne.s notanasty
move.w (a3),d1
move.l (a1,d1.w*4),newx
move.l #60*60,d2
jsr CheckHit
tst.b hitwall
beq.s stillgoing
add.b #1,damagetaken(a3)
move.w #-1,12(a0)
bra hitnasty
stillgoing:
notanasty:
add.w #32,a3
bra checkloop
hitnasty:
checkedall:
rts
ItsABigBullet:
move.w 12(a0),d0
blt doneshot
tst.b shotstatus(a0)
beq.s notpopping
move.l #Objects+4096*7,a1
move.b #12,d0
sub.b shotstatus(a0),d0
btst #0,d0
beq.s nobot
adda.w #32,a1
nobot:
asr.b #1,d0
ext.w d0
asl.w #6,d0
asl.w #5,d0
adda.w d0,a1
move.l a1,8(a0)
add.w #128*8,6(a0)
sub.w #4,4(a0)
sub.b #1,shotstatus(a0)
bgt.s notdonepop
move.w #-1,12(a0)
clr.b shotstatus(a0)
notdonepop:
bra doneshot
notpopping:
move.w #50*128,6(a0)
move.l #ObjectPoints,a1
move.w (a0),d1
lea (a1,d1.w*4),a1
move.w double,d3
move.w duh,d2
eor.w #32,d2
bne.s nonextx
add.w #64*32,d3
and.w #64*32*3,d3
nonextx:
move.w d2,duh
move.w d3,double
add.w d2,d3
move.l #Objects+4096*3,d2
ext.l d3
add.l d3,d2
move.l d2,8(a0)
move.w (a1),d2
move.w d2,oldx
add.w shotxvel(a0),d2
move.w d2,newx
move.w 2(a1),d2
move.w d2,oldz
add.w shotzvel(a0),d2
move.w d2,newz
move.l #ZoneAdds,a2
move.l (a2,d0.w*4),objroom
movem.l d0/d7/a0/a1/a2/a4/a5,-(a7)
jsr MoveObject
movem.l (a7)+,d0/d7/a0/a1/a2/a4/a5
tst.b hitwall
beq.s .nothitwall
move.b #11,shotstatus(a0)
move.l #Objects+4096*7,8(a0)
bra doneshot
rts
.nothitwall:
move.l objroom,a3
move.w (a3),12(a0)
move.w newx,(a1)
move.w newz,2(a1)
************
* Check if hit a nasty
move.l (a1),oldx
move.l #ObjectData,a3
move.l #ObjectPoints,a1
.checkloop:
tst.w (a3)
blt .checkedall
tst.w 12(a3)
blt.s .notanasty
cmp.b #0,16(a3)
bne.s .notanasty
move.w (a3),d1
move.l (a1,d1.w*4),newx
move.l #60*60,d2
jsr CheckHit
tst.b hitwall
beq.s .stillgoing
add.b #5,damagetaken(a3)
move.b #11,shotstatus(a0)
move.l #Objects+4096*7,8(a0)
bra .hitnasty
.stillgoing:
.notanasty:
add.w #32,a3
dbra d6,.checkloop
.hitnasty:
.checkedall
doneshot:
rts
ZoneAdds:
dc.l ZoneDat0
dc.l ZoneDat1
dc.l ZoneDat2
dc.l ZoneDat3
dc.l ZoneDat4
dc.l ZoneDat5
dc.l ZoneDat6
dc.l ZoneDat7
dc.l ZoneDat8
dc.l ZoneDat9
dc.l ZoneDat10
dc.l ZoneDat11
dc.l ZoneDat12
dc.l ZoneDat13
dc.l ZoneDat14
dc.l ZoneDat15
dc.l ZoneDat16
dc.l ZoneDat17
dc.l ZoneDat18
dc.l ZoneDat19
dc.l ZoneDat20
dc.l ZoneDat21
dc.l ZoneDat22
dc.l ZoneDat23
dc.l ZoneDat24
dc.l ZoneDat25
dc.l ZoneDat26
dc.l ZoneDat27
dc.l ZoneDat28
dc.l ZoneDat29
putinbackdrop:
move.w angpos,d5
and.w #8191,d5
muls #432,d5
divs #8192,d5
muls #160,d5
CACHE_ON d1
move.l frompt,a0
adda.w #104*4,a0
move.l #BackPicture,a1
add.l d5,a1
move.w #104*4,d1
move.w #2,d4
allbars:
move.w #31,d3
onebar:
move.w #1,d0
move.l a0,a2
vertline:
REPT 20
move.w (a1)+,(a2)
adda.w d1,a2
ENDR
dbra d0,vertline
adda.w #80,a1
cmp.l #EndBackPicture,a1
blt.s notoffrightend
move.l #BackPicture,a1
notoffrightend
addq #4,a0
dbra d3,onebar
addq #4,a0
dbra d4,allbars
rts